package com.nosnow.gmall.config;

import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;

/**
 * @类名称：RedisUtil
 * @类描述：被注入的工具类以供其他模块调用
 * @author: bingHeng
 * @Date 
 * @Version: 1.0
*/
public class RedisUtil {

    private JedisPool jedisPool;

    private int timeOut = 5 * 1000; //配置超时时间为5s

    /**
     * 初始化
     * @param host 地址
     * @param port 端口
     */
    public void initPool(String host, int port, int database) {

        JedisPoolConfig poolConfig = new JedisPoolConfig();

        // 连接数
        poolConfig.setMaxTotal(200);

        // 最大空闲数
        poolConfig.setMaxIdle(30);

        // 最小空闲数
        poolConfig.setMinIdle(10);

        // 如果在高峰时期最大连接数不够用了，则设置等待
        poolConfig.setBlockWhenExhausted(true);

        // 最大等待时间，超时时间
        poolConfig.setMaxWaitMillis(10*1000);

        // 测试链接用的一定要配上，保证用户拿到的链接是正确的
        poolConfig.setTestOnBorrow(true);

        jedisPool = new JedisPool(poolConfig, host, port, timeOut);
    }

    /**
     * 从缓存中获取数据的方法
     * @return
     */
    public Jedis getJedis() {
        Jedis jedis = jedisPool.getResource();
        return jedis;
    }
}
